package com.answer.petsale.service;

// START: 新增导入
import com.answer.petsale.model.dto.animal.AnimalQueryRequest;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
// END: 新增导入
import com.answer.petsale.model.entity.Animal;
import com.answer.petsale.model.vo.AnimalVO;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;


public interface AnimalService extends IService<Animal> {

    /**
     * 对宠物信息进行校验
     *
     * @param animal 宠物对象
     * @param add    是否为新增操作
     */
    void validAnimal(Animal animal, boolean add);

    /**
     * 将 Animal 实体转换为 AnimalVO 视图
     *
     * @param animal 宠物实体
     * @return AnimalVO
     */
    AnimalVO getAnimalVO(Animal animal);

    /**
     * 将分页的 Animal 实体列表转换为 AnimalVO 视图列表
     *
     * @param animalPage 宠物实体分页对象
     * @return 分页的 AnimalVO
     */
    Page<AnimalVO> getAnimalVOPage(Page<Animal> animalPage);

    // START: 新增方法定义
    /**
     * 根据查询请求构建查询条件
     * @param animalQueryRequest 查询请求 DTO
     * @return QueryWrapper
     */
    QueryWrapper<Animal> getQueryWrapper(AnimalQueryRequest animalQueryRequest);
    // END: 新增方法定义

}